МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
кафедра „КОМП’ЮТЕРИЗОВАНІ СИСТЕМИ, АВТОМАТИКА І УПРАВЛІННЯ”
ЗВІТ
до лабораторної роботи № 2
З КУРСУ “Комп’ютерні методи дослідження систем керування”
на тему: „ ПРЯМІ ТА ІТЕРАЦІЙНІ МЕТОДИ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРИЧНИХ РІВНЯНЬ ”
Варіант № 3
Мета роботи: вивчити найпоширеніші прямі та ітераційні методи розв’язування систем лінійних алгебричних рівнянь та способи їх застосування для обчислення визначників і обертання матриць.
Вхідні дані:
Система №1
де ; ; порядковому № завдання; № групи
(наприклад, для КС-21 )
Метод Гауса з вибором головного елемента
У методі Гауса при обчисленні елементів матриці вимагається ділення на головні елементи , , … , . Якщо ж один з головних елементів рівний нулю, то схему єдиного ділення не можливо реалізувати. І навіть, коли усі головні елементи відмінні від нуля, але серед них є близькі до нуля, то тоді похибки суттєво зростають і не є контрольованими.
Метод Гауса з вибором головного елемента по рядку.
При пошуку головного елемента по рядку місцями міняються не рівняння системи (1.1), як при пошуку по стовпцю, а невідомі у всіх рівняннях. Наприклад, на першому кроці методу Гауса серед коефіцієнтів знайдемо максимальний по абсолютному значенню коефіцієнт. Нехай це буде коефіцієнт . Перепишемо систему, переставивши місцями та у всіх рівняннях:
. (3.3)
Від перестановки місцями доданків у рівняннях розв’язок системи не зміниться. На наступному кроці методу Гауса знаходимо максимальний коефіцієнт серед та знову здійснюємо заміну, і т.д. Після завершення зворотного ходу методу Гауса необхідно знову виконати перестановку , тобто впорядкувати елементи вектора у тому порядку, який був на самому початку.
Загальний алгоритм методу Гауса
з вибором головного елемента по рядку
для
для
для
рядкові сортування
для
для
;
Прямий хід:
рядкові сортування
,
для
якщо {; }
; ;
для
якщо {; ; }
інакше {; ; }
для
Оберне-ний хід:
для
якщо
Впорядку-вання
Опис алгоритму
Задаємо початкові значення вектора . Цей вектор містить інформацію про переміщення невідомих під час вибору головних елементів.
Прямий хід методу. Резервуємо (копіюємо) базові матриці та у відповідні матриці та . Вхідні матриці та нам необхідні для кінцевої перевірки результату. Протягом виконання алгоритму ми працюємо з копіями вхідних матриць.
Далі в трьох циклах виконується перетворення початкової матриці до трикутного вигляду матриці та відповідне перетворення правих частин системи . Зазначимо, що на кожному кроці першого циклу по змінній виконуємо процедуру рядкового сортування по головним елементам. Тобто, відшукуємо максимальне значення по модулю головного елемента, а потім міняємо місцями стовпці в матрицях та (копії матриць та ). Змінна визначає номер рядка головного елемента, змінна використовується як проміжна змінна при заміні значень у елементах матриць та , а як проміжна змінна при заміні значень елементів вектора .
Обернений хід. Спершу присвоюємо значення для останнього невідомого , а потім в циклі відшукуємо усі решта невідомі.
На останньому етапі впорядковуємо значення вектора у тому порядку, який був на самому початку.
Для перевірки вірності роботи алгоритму підставляємо наші знайдені в систему (1.1). Обчислені ліві частини рівнянь повинні відповідати правим значенням елементів вектора .
Список змінних, які використовуються в коді програми, та їх пояснення:
A[n][n] – матриця розмірністю 4*4;
P[n], inx[n], V[n][n], X[n], Y[n], C[n][n], max, value, z ,p, k, s, b – змінні типу double;
B[n] – стовпець вільних членів;
l, f, h, w, i, j – змінні типу int;
Блок-схема розробленої програми
Остаточна версія програми
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
...